home *** CD-ROM | disk | FTP | other *** search
/ SGI Varsity Update 1998 August / SGI Varsity Update 1998 August.iso / docs6.4 / relnotes / ftn77_fe / ch5.z / ch5
Text File  |  1998-07-29  |  34KB  |  792 lines

  1.  
  2.  
  3.  
  4.                                                - 1 -
  5.  
  6.  
  7.  
  8.                     7.2.1 Fortran 77 Front-End Release Notes
  9.  
  10.  
  11.  
  12.  
  13.  
  14.  
  15.  
  16.  
  17.  
  18.  
  19.  
  20.  
  21.  
  22.  
  23.  
  24.  
  25.  
  26.  
  27.  
  28.  
  29.  
  30.  
  31.  
  32.  
  33.  
  34.  
  35.  
  36.  
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.                                                - 2 -
  69.  
  70.  
  71.  
  72.                     DDDDooooccccuuuummmmeeeennnntttt NNNNuuuummmmbbbbeeeerrrr 000000007777----1111666655559999----000011110000
  73.  
  74.  
  75.                     5.  _K_n_o_w_n__P_r_o_b_l_e_m_s__a_n_d__W_o_r_k_a_r_o_u_n_d_s
  76.  
  77.                     This chapter describes the known problems with
  78.                     the current release of the Fortran product and
  79.                     how to work around them.  Some of the
  80.                     descriptions are followed by a Silicon Graphics,
  81.                     Inc., bug report number in the form
  82.                     (Bug ID xxxxx).
  83.  
  84.  
  85.                     5.1  _K_n_o_w_n__P_r_o_b_l_e_m_s__(_L_i_c_e_n_s_i_n_g_)
  86.  
  87.                        +o The MIPSpro F77 compiler will abort if the
  88.                          license file directory (/var/flexlm)
  89.                          contains a cycle formed by symbolic links.
  90.                          For example:
  91.  
  92.                          %ls -l /var/flexlm
  93.                          lrwxr-xr-x    1 root   sys       1 Mar 13  1996 license -> .
  94.                          -rw-r--r--    1 root   sys    1162 Aug 20 17:09 license.dat
  95.  
  96.                          %f77 foo.f
  97.                          Bus error (core dumped)
  98.  
  99.                          The solution is to remove the symbolic link
  100.                          that forms the cycle.
  101.  
  102.  
  103.                        +o Overloaded use of LM_LICENSE_FILE
  104.  
  105.                          Although this is not a bug, compiler users
  106.                          often have environments which specify the
  107.                          LM_LICENSE_FILE variable with a license
  108.                          file that contains licenses for other
  109.                          software.  If, however, the compiler
  110.                          licenses are not installed in this
  111.                          alternate license file, compilations will
  112.                          generate the warning message illustrated
  113.                          below. The remedy is to either not use the
  114.                          LM_LICENSE_FILE variable or to set it to
  115.                          its old value followed by a colon (:) and
  116.                          the file that contains the compiler
  117.                          licenses.
  118.  
  119.  
  120.  
  121.  
  122.  
  123.  
  124.  
  125.  
  126.  
  127.  
  128.  
  129.  
  130.  
  131.  
  132.  
  133.  
  134.                                                - 3 -
  135.  
  136.  
  137.  
  138.                          For Example:
  139.  
  140.                          %echo $LM_LICENSE_FILE
  141.                          /usr/john_doe/license.dat
  142.                          %f77 foo.f
  143.                          No such feature exists (-5,116:2) No such file or directory
  144.  
  145.                           The MIPSpro Fortran 77 Compiler
  146.                           (license FEATURE string = f77)
  147.                           requires a license password.
  148.  
  149.                           For license installation and trouble shooting
  150.                           information visit the web page:
  151.  
  152.                                   http://www.sgi.com/Support/Licensing/install_docs.html
  153.  
  154.                           To obtain a Permanent license (proof of purchase
  155.                           required) or an Evaluation license please
  156.                           visit our license request web page:
  157.  
  158.                                   http://www.sgi.com/Products/license.html
  159.  
  160.                                   or send a blank email message to:
  161.  
  162.                                   license@sgi.com
  163.  
  164.                           In North America, Silicon Graphics' customers may request
  165.                           Permanent licenses by sending a facsimile to:
  166.  
  167.                                   (650) 932-0537
  168.  
  169.                                   or by calling our technical support hotline
  170.  
  171.                                   1-800-800-4SGI
  172.  
  173.                           If you are Outside of North America or you are not a Silicon
  174.                           Graphics support customer then contact your local support provider.
  175.  
  176.  
  177.                          %setenv LM_LICENSE_FILE /usr/john_doe/license.dat:/var/flexlm/license.dat
  178.                          %echo $LM_LICENSE_FILE
  179.                          /usr/john_doe/license.dat:/var/flexlm/license.dat
  180.                          %f77 foo.f
  181.                          %
  182.  
  183.  
  184.  
  185.  
  186.                        +o Cryptic warning message from licensing.
  187.  
  188.  
  189.  
  190.  
  191.  
  192.  
  193.  
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200.                                                - 4 -
  201.  
  202.  
  203.  
  204.                          The first line of a warning message that
  205.                          occurs when a license file exists under
  206.                          /var/flexlm but does not contain the
  207.                          compiler license can be misleading. For
  208.                          completeness the following example
  209.                          illustrates the entire output when a
  210.                          license file exists, but a license is not
  211.                          installed:
  212.  
  213.                          %f77 foo.f
  214.                          No such feature exists (-5,116)
  215.  
  216.                           The MIPSpro Fortran 77 Compiler
  217.                           (license FEATURE string = f77)
  218.                           requires a license password.
  219.  
  220.                           For license installation and trouble shooting
  221.                           information visit the web page:
  222.  
  223.                                   http://www.sgi.com/Support/Licensing/install_docs.html
  224.  
  225.                           To obtain a Permanent license (proof of purchase
  226.                           required) or an Evaluation license please
  227.                           visit our license request web page:
  228.  
  229.                                   http://www.sgi.com/Products/license.html
  230.  
  231.                                   or send a blank email message to:
  232.  
  233.                                   license@sgi.com
  234.  
  235.                           In North America, Silicon Graphics' customers may request
  236.                           Permanent licenses by sending a facsimile to:
  237.  
  238.                                   (650) 932-0537
  239.  
  240.                                   or by calling our technical support hotline
  241.  
  242.                                   1-800-800-4SGI
  243.  
  244.                           If you are Outside of North America or you are not a Silicon
  245.                           Graphics support customer then contact your local support provider.
  246.  
  247.  
  248.  
  249.  
  250.  
  251.  
  252.  
  253.  
  254.  
  255.  
  256.  
  257.  
  258.  
  259.  
  260.  
  261.  
  262.  
  263.  
  264.  
  265.  
  266.                                                - 5 -
  267.  
  268.  
  269.  
  270.                     5.2  _K_n_o_w_n__P_r_o_b_l_e_m_s__i_n__M_I_P_S_p_r_o__F_o_r_t_r_a_n__7_7
  271.  
  272.                     The problems described in this section are known
  273.                     to exist in MIPSpro Fortran 77 in both 32-bit
  274.                     and 64-bit compilation modes.  References to the
  275.                     64-bit compiler implicitly refer to ----nnnn33332222
  276.                     compilations as well.
  277.  
  278.                      +o SSSSyyyymmmmbbbboooollll ccccllllaaaasssshhhh wwwwiiiitttthhhh _llll_iiii_bbbb_ffff_tttt_nnnn_...._ssss_oooo ((((BBBBuuuugggg IIIIDDDD 111155554444888844445555))))
  279.                        Some programs which used to link correctly
  280.                        with previous releases get an _l_d error
  281.                        because of conflicting symbol definitions
  282.                        between their symbols and those of _l_i_b_f_t_n._s_o.
  283.                        Work around this by compiling with the
  284.                        -_n_o_n__s_h_a_r_e_d option.
  285.  
  286.                      +o CCCCoooommmmppppiiiilllliiiinnnngggg oooolllldddd FFFFoooorrrrttttrrrraaaannnn ccccooooddddeeee
  287.                        Fortran, by default, allocates local
  288.                        variables on the stack for faster execution
  289.                        speed.  These local automatic variables are
  290.                        uninitialized, as opposed to being
  291.                        initialized to zeros, which occurs using the
  292.                        static allocation of older Fortran systems.
  293.                        Also, the value of an automatic variable is
  294.                        not retained between successive calls to a
  295.                        subroutine as for a static variable.
  296.                        Therefore,  if you have an old program,
  297.                        especially one ported from the VAX, that
  298.                        behaves strangely, recompile it with ----ssssttttaaaattttiiiicccc
  299.                        and check the results.  If using ----ssssttttaaaattttiiiicccc
  300.                        works correctly, the problem is caused by
  301.                        automatic allocation of undeclared static
  302.                        variables.  If execution speed is not an
  303.                        issue, the program can be compiled with
  304.                        ----ssssttttaaaattttiiiicccc without having to be modified.
  305.                        Otherwise, you need to track down all
  306.                        variables that expect an initial value
  307.                        (either a zero value when starting a program
  308.                        or the value from the previous subroutine
  309.                        invocation in a subroutine call) and declare
  310.                        those variables as static using the STATIC
  311.                        statement.  Using the ----LLLLIIIISSSSTTTT option can help
  312.                        in tracking these static variables.
  313.  
  314.                        Running these old programs without the
  315.                        ----ssssttttaaaattttiiiicccc compilation option sometimes results
  316.                        in very slow execution speed because the
  317.                        supposedly static values are undefined and
  318.                        take a lot more time to converge.  So the
  319.                        first thing to try when you have an unusual
  320.                        performance problem when porting a program to
  321.  
  322.  
  323.  
  324.  
  325.  
  326.  
  327.  
  328.  
  329.  
  330.  
  331.  
  332.                                                - 6 -
  333.  
  334.  
  335.  
  336.                        a Silicon Graphics platform is to add the
  337.                        ----ssssttttaaaattttiiiicccc option when compiling.
  338.  
  339.                      +o VVVVaaaarrrriiiiaaaabbbblllleeee ffffoooorrrrmmmmaaaatttt iiiinnnn aaaa cccchhhhaaaarrrraaaacccctttteeeerrrr ssssttttrrrriiiinnnngggg ((((BBBBuuuugggg IIIIDDDD
  340.                        8888777777774444))))
  341.                        Variable format is only recognized inside a
  342.                        FORMAT statement.  If it is used within a
  343.                        character string, it will give a runtime
  344.                        error.  Work around this bug by making an
  345.                        explicit FORMAT statement when variable
  346.                        format is desired.
  347.  
  348.                      +o RRRRuuuunnnnttttiiiimmmmeeee IIII////OOOO eeeerrrrrrrroooorrrr mmmmeeeessssssssaaaaggggeeeessss ((((BBBBuuuugggg IIIIDDDD 9999222288884444))))
  349.                        All Fortran I/O error messages are documented
  350.                        in _p_e_r_r_o_r(3F) and all IRIX system error
  351.                        messages are documented in _i_n_t_r_o(2).   Some
  352.                        of these numbers overlapped and sometimes the
  353.                        wrong error messages are printed for a given
  354.                        error number.  When the error message does
  355.                        not make sense, it's best to check both man
  356.                        pages to see which one applies.
  357.  
  358.                     5.3  _K_n_o_w_n__P_r_o_b_l_e_m_s__i_n__M_I_P_S_p_r_o__6_4_-_B_i_t__F_o_r_t_r_a_n__7_7
  359.  
  360.                      +o PPPPrrrroooobbbblllleeeemmmmssss wwwwiiiitttthhhh MMMMPPPP pppprrrroooocccceeeesssssssseeeessss lllloooocccckkkkeeeedddd oooonnnnttttoooo aaaa ccccppppuuuu
  361.                        The Power Challenge machines have the special
  362.                        hardware device /dev/ccsync to help reduce
  363.                        the overhead of an MP job, and this device is
  364.                        used by default.  However, due to necessary
  365.                        compromises in the design, if an MP job uses
  366.                        this device, the mp library will lock the
  367.                        master process onto a cpu via the equivalent
  368.                        of the sysmp(MP_MUSTRUN) system call.  There
  369.                        are some unfortunate side effects of this:
  370.                        you may not execute the sysmp(MP_RUNANYWHERE)
  371.                        command for the master process; the mp
  372.                        synchronization will fail if you do.  Some
  373.                        users lock the master and each of the slave
  374.                        processes onto separate cpus.  This can fail
  375.                        in the same way as above if the master
  376.                        process gets assigned to a different cpu.
  377.                        Process locking is an inherited attribute;
  378.                        this means that if your MP program forks or
  379.                        sprocs other child processes, they will be
  380.                        locked onto the same cpu as the master, which
  381.                        can seriously degrade performance.  This can
  382.                        be worked around by having the newly created
  383.                        child process execute sysmp(MP_RUNANYWHERE).
  384.                        If for some reason you must do your own
  385.                        process locking, and/or cannot get the newly
  386.                        created children to execute
  387.  
  388.  
  389.  
  390.  
  391.  
  392.  
  393.  
  394.  
  395.  
  396.  
  397.  
  398.                                                - 7 -
  399.  
  400.  
  401.  
  402.                        sysmp(MP_RUNANYWHERE), the problem can be
  403.                        avoided by setting the environment variable
  404.                        _MP_DONT_USE_CCSYNC, which will prevent MP
  405.                        jobs run by that shell from using
  406.                        /dev/ccsync.
  407.  
  408.                      +o TTTToooooooo mmmmaaaannnnyyyy ccccaaaallllllllssss ttttoooo mmmmpppp____ddddeeeessssttttrrrrooooyyyy
  409.                        Due to a problem in libmp.a, if a process
  410.                        creates and destroys MP processes (via
  411.                        mp_destroy) more than about 35 times in a
  412.                        single run, an internal table will overflow
  413.                        and you will get the message:  "Error: MP lib
  414.                        could not register __mp_cleanup function via
  415.                        __ateachexit".  Note that MP process
  416.                        destruction must be done deliberately; the
  417.                        default behavior is to create the processes
  418.                        once, and to keep them around until the job
  419.                        terminates.  There is no viable workaround
  420.                        for this problem (other than calling
  421.                        mp_destroy less often).
  422.  
  423.                      +o LLLLooooggggiiiiccccaaaallll vvvvaaaarrrriiiiaaaabbbblllleeeessss hhhhoooolllldddd iiiinnnntttteeeeggggeeeerrrr vvvvaaaalllluuuueeeessss
  424.                        In the 32-bit compiler, when LOGICAL*2,
  425.                        LOGICAL*4, and LOGICAL*8 variables are
  426.                        assigned integer values (an extension to the
  427.                        Fortran 77 standard), the values are
  428.                        converted to .TRUE. or .FALSE.  (one and
  429.                        zero, respectively) before being assigned to
  430.                        the variables.  In the 64-bit compiler, the
  431.                        LOGICAL variable is assigned the bit pattern
  432.                        corresponding to the integer expression.
  433.  
  434.                      +o IIIInnnnlllliiiinnnneeee ooooppppttttiiiioooonnnn ////NNNNOOOOFFFF77777777 iiiissss nnnnooootttt ssssuuuuppppppppoooorrrrtttteeeedddd ((((BBBBuuuugggg IIIIDDDD
  435.                        111188888888555544449999))))
  436.                        This option is ignored by the 64-bit
  437.                        compiler.
  438.  
  439.                      +o AAAAddddjjjjuuuussssttttaaaabbbblllleeee aaaarrrrrrrraaaayyyy ddddiiiimmmmeeeennnnssssiiiioooonnnnssss ccccaaaannnn''''tttt bbbbeeee aaaarrrrrrrraaaayyyy
  440.                        vvvvaaaalllluuuueeeessss ((((BBBBuuuugggg IIIIDDDD 222200001111666655554444))))
  441.                        Although this has always been documented as
  442.                        illegal in SGI Fortran, the 32-bit compiler
  443.                        accepts this syntax, whereas the 64-bit
  444.                        compiler emits a compile-time error.
  445.  
  446.                      +o TTTThhhheeee ----XXXXllllooooccccaaaallllddddaaaattttaaaa ooooppppttttiiiioooonnnn hhhhaaaassss cccchhhhaaaannnnggggeeeedddd ssssyyyynnnnttttaaaaxxxx
  447.                        The 64-bit loader uses a different syntax for
  448.                        the option to make each thread in an MP
  449.                        program have its own copy of a common block.
  450.                        In the 32-bit loader, the option is
  451.                        ----XXXXllllooooccccaaaallllddddaaaattttaaaa ccccoooommmmmmmmoooonnnn____nnnnaaaammmmeeee____ while the 64-bit
  452.                        loader uses ----WWWWllll,,,,----XXXXllllooooccccaaaallll,,,,ccccoooommmmmmmmoooonnnn____nnnnaaaammmmeeee____.  Also,
  453.  
  454.  
  455.  
  456.  
  457.  
  458.  
  459.  
  460.  
  461.  
  462.  
  463.  
  464.                                                - 8 -
  465.  
  466.  
  467.  
  468.                        the 32-bit loader allows list of ccccoooommmmmmmmoooonnnn____nnnnaaaammmmeeees
  469.                        with the one ----XXXXllllooooccccaaaallllddddaaaattttaaaa option, while the
  470.                        64-bit loader allows only one name per
  471.                        ----XXXXllllooooccccaaaallll option (but does allow multiple
  472.                        ----XXXXllllooooccccaaaallll options).
  473.  
  474.                      +o NNNNoooo wwwwaaaarrrrnnnniiiinnnnggggssss ffffoooorrrr mmmmiiiissssaaaalllliiiiggggnnnneeeedddd ccccoooommmmmmmmoooonnnn bbbblllloooocccckkkkssss
  475.                        The 32-bit compiler warns for misaligned
  476.                        COMMON blocks, whereas the 64-bit compiler
  477.                        does not.
  478.  
  479.                      +o SSSSttttrrrriiiicccctttteeeerrrr cccchhhheeeecccckkkkiiiinnnngggg oooonnnn GGGGOOOOTTTTOOOO''''ssss
  480.                        The MIPSpro manuals document that GOTO is
  481.                        only valid when the branch is to an
  482.                        executable statement.  The 64-bit compiler is
  483.                        stricter about enforcing this rule than the
  484.                        32-bit compiler.
  485.  
  486.                      +o 222255556666----cccchhhhaaaarrrraaaacccctttteeeerrrr lllliiiimmmmiiiitttt oooonnnn lllliiiinnnneeee lllleeeennnnggggtttthhhh
  487.                        The 32-bit compiler has no limit on the
  488.                        length of a source line, whereas the 64-bit
  489.                        compiler limits a line to 256 characters.
  490.                        Continuation lines may be used for source
  491.                        lines longer than 256 characters.
  492.  
  493.                      +o 99999999 mmmmaaaaxxxxiiiimmmmuuuummmm ccccoooonnnnttttiiiinnnnuuuuaaaattttiiiioooonnnn lllliiiinnnneeeessss
  494.                        The compiler allows the maximum number of
  495.                        continuation lines (99 by default) to be
  496.                        increased by using -Wf,-NC<number>.
  497.  
  498.                      +o ----mmmmpppp____kkkkeeeeeeeepppp nnnnooootttt rrrreeeeccccooooggggnnnniiiizzzzeeeedddd
  499.                        This option is needed for debugging parallel
  500.                        applications when the 32-bit compilers are
  501.                        used, but is unnecessary with the 64-bit
  502.                        compilers, as proper debugging info is
  503.                        generated when the ----gggg compiler option is
  504.                        used.
  505.  
  506.                      +o ----wwww66666666 iiiissss nnnnooootttt iiiimmmmpppplllleeeemmmmeeeennnntttteeeedddd
  507.                        The ----wwww66666666 option is not implemented in this
  508.                        release.
  509.  
  510.                      +o ----66666666 iiiissss nnnnooootttt iiiimmmmpppplllleeeemmmmeeeennnntttteeeedddd
  511.                        The ----66666666 option is not implemented in this
  512.                        release.
  513.  
  514.                      +o ----uuuusssseeeeffffppppiiiiddddxxxx iiiissss nnnnooootttt iiiimmmmpppplllleeeemmmmeeeennnntttteeeedddd
  515.                        The ----uuuusssseeeeffffppppiiiiddddxxxx option is not implemented in
  516.                        this release.
  517.  
  518.  
  519.  
  520.  
  521.  
  522.  
  523.  
  524.  
  525.  
  526.  
  527.  
  528.  
  529.  
  530.                                                - 9 -
  531.  
  532.  
  533.  
  534.                      +o ----UUUU iiiissss nnnnooootttt iiiimmmmpppplllleeeemmmmeeeennnntttteeeedddd
  535.                        The ----UUUU option is not implemented in this
  536.                        release.
  537.  
  538.                      +o NNNNaaaammmmeeeelllliiiisssstttt ssssyyyymmmmbbbboooollllssss ssssiiiilllleeeennnnttttllllyyyy ttttrrrruuuunnnnccccaaaatttteeeedddd ((((BBBBuuuugggg IIIIDDDD
  539.                        333377778888888899991111,,,, 333377778888999900008888))))
  540.                        In the 64-bit compiler, symbols are
  541.                        recognized for their full length in all
  542.                        contexts other than namelists where they are
  543.                        silently truncated if they are longer than 31
  544.                        characters.
  545.  
  546.                      +o CCCCoooommmmppppiiiilllleeee----TTTTiiiimmmmeeee eeeerrrrrrrroooorrrrssss ffffoooorrrr oooovvvveeeerrrrllllaaaappppppppiiiinnnngggg
  547.                        iiiinnnniiiittttiiiiaaaalllliiiizzzzaaaattttiiiioooonnnnssss uuuussssiiiinnnngggg DDDDAAAATTTTAAAA ssssttttaaaatttteeeemmmmeeeennnnttttssss ((((BBBBuuuugggg IIIIDDDD
  548.                        333300005555888888881111))))
  549.                        The 64-bit compiler can produce errors during
  550.                        compilation of programs that include
  551.                        overlapping initializations using DATA
  552.                        statements.
  553.  
  554.  
  555.                     5.4  _K_n_o_w_n _P_r_o_b_l_e_m_s _i_n _M_I_P_S_p_r_o _6_4-_B_i_t _a_n_d _N_3_2
  556.                          _F_o_r_t_r_a_n _7_7
  557.  
  558.                      +o ffff77777777 ddddooooeeeessss nnnnooootttt ddddeeeetttteeeecccctttt oooobbbbvvvviiiioooouuuussss eeeerrrrrrrroooorrrr ((((BBBBuuuugggg IIIIDDDD
  559.                        555577777777111122222222)))) The following sytactically incorrect
  560.                        program compiles without error under -n32 or
  561.                        -64:
  562.  
  563.  
  564.  
  565.  
  566.  
  567.  
  568.  
  569.  
  570.  
  571.  
  572.  
  573.  
  574.  
  575.  
  576.  
  577.  
  578.  
  579.  
  580.  
  581.  
  582.  
  583.  
  584.  
  585.  
  586.  
  587.  
  588.  
  589.  
  590.  
  591.  
  592.  
  593.  
  594.  
  595.  
  596.                                                - 10 -
  597.  
  598.  
  599.  
  600.                              program aa
  601.                              double precision K(2,2)
  602.                              data k/1.,2.,3.,4/
  603.                              call example(K)
  604.                              stop
  605.                              end
  606.  
  607.                              SUBROUTINE EXAMPLE(K)
  608.                              IMPLICIT NONE
  609.                              DOUBLE PRECISION K(2,2)
  610.                        C     MISTAKE !!!!! INTEGER K should be INTEGER KK
  611.                              INTEGER I,J,K
  612.  
  613.                              DO 1 I = 1, 2
  614.                                 DO 2 J =1, 2
  615.                                    K(I,J)=K(I,J)*2
  616.                        2        CONTINUE
  617.                              print *,k(I,1),k(I,2)
  618.                        1     CONTINUE
  619.                              print *,"this is the end"
  620.                              RETURN
  621.                              END
  622.  
  623.  
  624.  
  625.  
  626.                     5.5  _K_n_o_w_n__P_r_o_b_l_e_m_s__i_n__M_I_P_S_p_r_o__3_2_-_B_i_t__F_o_r_t_r_a_n__7_7
  627.  
  628.                      +o EEEExxxxeeeeccccuuuuttttaaaabbbblllleeee ssssttttaaaatttteeeemmmmeeeennnnttttssss iiiinnnn iiiinnnncccclllluuuuddddeeee ffffiiiilllleeeessss ((((BBBBuuuugggg
  629.                        IIIIDDDD 5555555599993333))))
  630.                        Executable statements are not allowed inside
  631.                        include files because of a symbol table
  632.                        requirement that all executable statements of
  633.                        the same program unit, or, at least, the
  634.                        first and the last executable statements,
  635.                        come from the same source file.  When
  636.                        executable statements are used inside include
  637.                        files, the compiler sometimes gives an
  638.                        internal _l_i_b_m_l_d error when compiled with the
  639.                        ----gggg option.  Please avoid using executable
  640.                        statements inside include files.
  641.  
  642.                      +o CCCCoooonnnnccccaaaatttteeeennnnaaaattttiiiioooonnnn iiiinnnn WWWWRRRRIIIITTTTEEEE ssssttttaaaatttteeeemmmmeeeennnntttt ((((BBBBuuuugggg IIIIDDDD
  643.                        9999444488887777))))
  644.                        Concatenation of character strings with
  645.                        variable lengths is not allowed in WRITE
  646.                        statements, although this can now be done in
  647.                        subroutine calls as an extension to the ANSI
  648.                        standard.  The workaround is to use comma to
  649.                        replace the concatenation operator since all
  650.                        Fortran output items are automatically
  651.  
  652.  
  653.  
  654.  
  655.  
  656.  
  657.  
  658.  
  659.  
  660.  
  661.  
  662.                                                - 11 -
  663.  
  664.  
  665.  
  666.                        concatenated as a matter of fact so the
  667.                        concatenation operation which puts the
  668.                        concatenated result into a temporary buffer
  669.                        is unnecessary, slows down the execution, and
  670.                        causes the program to be less portable.
  671.  
  672.                      +o _cccc_pppp_pppp ddddooooeeeessss nnnnooootttt rrrreeeeccccooooggggnnnniiiizzzzeeee FFFFoooorrrrttttrrrraaaannnn ccccoooonnnnttttiiiinnnnuuuuaaaattttiiiioooonnnn
  673.                        lllliiiinnnneeeessss
  674.                        _c_p_p does not recognize Fortran continuation
  675.                        lines, so it can mistakenly think that a word
  676.                        is outside of a character string when that
  677.                        word is continued across lines.  If that word
  678.                        is defined with the ----DDDD option or by #define
  679.                        to be something else, _c_p_p can replace it with
  680.                        another value, resulting in the wrong
  681.                        character string value.  To work around this
  682.                        problem, either compile with the ----nnnnooooccccpppppppp
  683.                        option or break the word pattern into two
  684.                        lines so that _c_p_p cannot recognize it.
  685.  
  686.                      +o ----bbbbaaaacccckkkkssssllllaaaasssshhhh ddddooooeeeessss nnnnooootttt wwwwoooorrrrkkkk wwwwiiiitttthhhh _cccc_pppp_pppp
  687.                        Although the ----bbbbaaaacccckkkkssssllllaaaasssshhhh option causes _f_c_o_m to
  688.                        treat the backslash character as normal
  689.                        character, _c_p_p still treats it as special
  690.                        escape sequence and causes unexpected
  691.                        behavior.  Use ----nnnnooooccccpppppppp as a workaround.
  692.  
  693.                      +o UUUUssssiiiinnnngggg uuuunnnnddddeeeeccccllllaaaarrrreeeedddd aaaarrrrrrrraaaayyyyssss iiiissss mmmmiiiissssiiiinnnntttteeeerrrrpppprrrreeeetttteeeedddd aaaassss
  694.                        aaaa ssssttttaaaatttteeeemmmmeeeennnntttt ffffuuuunnnnccccttttiiiioooonnnn
  695.                        ((((BBBBuuuugggg IIIIDDDD 8888444499991111))))
  696.                        Referencing an array element on the left-hand
  697.                        side of an assignment without declaring the
  698.                        dimension for the array can cause the
  699.                        assignment statement to be misinterpreted as
  700.                        a statement function.
  701.  
  702.                      +o MMMMuuuullllttttiiiipppplllleeee ddddeeeeffffiiiinnnniiiittttiiiioooonnnnssss ooooffff ccccoooommmmmmmmoooonnnn bbbblllloooocccckkkkssss ((((BBBBuuuugggg IIIIDDDD
  703.                        11111111666622229999))))
  704.                        When a common block is defined several times
  705.                        in different files by using DATA statements
  706.                        to initialize one or more of the common block
  707.                        elements, the linker produces an error
  708.                        message regarding multiple definitions of
  709.                        symbols.  Solve this problem by moving all
  710.                        initialization of the same common block to
  711.                        one subroutine or block data.
  712.  
  713.                      +o VVVVeeeerrrryyyy llllaaaarrrrggggeeee aaaarrrrrrrraaaayyyyssss ccccaaaauuuusssseeee sssseeeeggggmmmmeeeennnnttttaaaattttiiiioooonnnn ffffaaaauuuulllltttt
  714.                        ((((BBBBuuuugggg IIIIDDDD 11111111999999994444))))
  715.                        When large arrays are declared inside a
  716.                        subroutine, the program can get a
  717.  
  718.  
  719.  
  720.  
  721.  
  722.  
  723.  
  724.  
  725.  
  726.  
  727.  
  728.                                                - 12 -
  729.  
  730.  
  731.  
  732.                        segmentation fault at execution time.  When
  733.                        this happens, check for the sizes of the
  734.                        declared arrays and reduce them if possible.
  735.  
  736.                      +o LLLLiiiinnnneeee nnnnuuuummmmbbbbeeeerrrr ffffoooorrrr ddddeeeeccccllllaaaarrrraaaattttiiiioooonnnn eeeerrrrrrrroooorrrr mmmmeeeessssssssaaaaggggeeeessss
  737.                        ((((BBBBuuuugggg IIIIDDDD 11112222999933336666))))
  738.                        Since many Fortran declarations are
  739.                        interrelated, the actual characteristics of a
  740.                        variable is not known until all declarations
  741.                        have been done, that is at the first
  742.                        executable statement.  Therefore, the error
  743.                        messages indicate the first executable
  744.                        statement when the actual error is due to the
  745.                        wrong combination of the declarations.  This
  746.                        problem usually effects variables declared in
  747.                        COMMON blocks and EQUIVALENCE statements.
  748.  
  749.  
  750.  
  751.  
  752.  
  753.  
  754.  
  755.  
  756.  
  757.  
  758.  
  759.  
  760.  
  761.  
  762.  
  763.  
  764.  
  765.  
  766.  
  767.  
  768.  
  769.  
  770.  
  771.  
  772.  
  773.  
  774.  
  775.  
  776.  
  777.  
  778.  
  779.  
  780.  
  781.  
  782.  
  783.  
  784.  
  785.  
  786.  
  787.  
  788.  
  789.  
  790.  
  791.